Tomáš Pospíšek's Notizblock
Mindustry ist ein wunderbares Game. Beim Spielen kamen mir Ideen, dass man z.B. das Klima oder mein Leben entsprechend modelieren könnte:
Links der Producer, rechts der Consumer, dazwischen die Pipeline, welche die produzierten Dinger zum Verbraucher transportiert.
Links die CO2 Quelle, rechts die Atmosphäre.
Links mein Arbeitgeber, dazwischen das Geld, rechts ich.
Links das Ewige, dazwischen die Zeit, die es produziert, rechts ich welcher meine Zeit verbraucht.
Wie kann man diese Fälle modellieren?
Wir haben links und rechts "Maschinen" und dazwischen eine "Pipeline".
Man muss die Simulation von der Darstellung trennen:
- Model (Daten)
- View (Ansicht)
- Controller (Prozess)
Hier eine "Proof of Concept" Umsetzung der View in Python:
Warum als Engine nicht direkt Mindustry verwenden? Weil ich die Problematik zuerst verstehen muss, bevor ich mich in die Form begebe, welche mir Mindustry bietet und weil die Einarbeitung in Mindustry schätzungsweise viel Zeit brauchen würde.
Nehmen wir Mal die Lebens-Simulation: ich möchte diese von Tag zu Tag, aber auch von Jahr zu Jahr laufen lassen können.
D.h. ich möchte mir die Simulation so ansehen können, dass jeweils Jahre oder nur Tage vergehen. D.h. zwischen zwei Ansichten ist ein Tag oder ein Jahr vergangen. Dies ist nur die Ansicht.
Auf Prozess Ebene sollte die Simulation:
- mit diesen verschiedenen Spannen zurechtkommen
- entweder präzise sein
- oder wenn das nicht geht Abstraktionen erlauben.
Eine Maschine bekommt Input und erstellt Output. Input und Output sind diskret. d.h. Einzelteile.
Nehmen wir Mal an, meine "ich"-Maschine würde "Zeit" in "Studenpaketen" konsumieren. D.h. wenn ich in der Jahresansicht bin, dann müsste mein "Zeitproducer" eine Jahresmenge an Stundenpaketen in das System einfüllen.
Wie kann man den Fluss dieser Einzelteile auf der Pipeline darstellen? Man könnte auf der Pipeline eine Zähler machen, welcher die Transportierten Einheiten in Mengenpaketen zusammenfasst. D.h. in der Animation würde dann ein 24*365 = 8760 ~= 9k Paket über die Leitung.
(probably to be continued)
TODO, zu erkundende Ideen:
200ok's "easy" verwendet source -> maschine -> resultat und zwar reproducible. Source kann gepatched werden. Somit hat man eine History.
ein Prozess der Stateless ist kann über beliebige Spannen abstrahiert werden. D.h. ich kann ihn über n Einheiten laufen lassen und mir dann den Output merken und wenn ich als Schritt n Einheiten habe, kann ich einfach den Output über n Einheiten verwenden, ohne, dass ich die Maschine laufen lasse.
Tomáš Pospíšek, 2019-09-22